#ifndef __ACCEPTOR_HPP__
#define __ACCEPTOR_HPP__

#include "InetAddress.hpp"
#include "Socket.hpp"

namespace xww
{
    class Acceptor
    {
        public:
            Acceptor(unsigned short port, const string &ip = "0.0.0.0");
            ~Acceptor();

            void ready(); // 准备监听
            int accept(); // 接受连接
            int getListenFd() const; // 获取监听套接字文件描述符
        private:
            void setReuseAddr(bool); // 设置地址重用选项
            void setReusePort(bool); // 设置端口重用选项
            void bind(); // 绑定套接字到地址
            void listen(); // 开始监听

        private:
            InetAddress _addr; // 存储监听地址和端口
            Socket _listenSock; // 监听套接字对象
    };

}// end of namespace xww

#endif